      * cobc -x ordenar_procedure.cbl -o ordenar_procedure.exe
      ******************************************************************
       IDENTIFICATION DIVISION.
      ******************************************************************
       PROGRAM-ID. ordenar_procedure.       

      ******************************************************************
       ENVIRONMENT DIVISION.
      ******************************************************************
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
        SELECT ArchivoEntrada ASSIGN TO "ENTRADA.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.

        SELECT ArchivoSalida ASSIGN TO "SALIDA_PROCEDURE.DAT"
        ORGANIZATION IS LINE SEQUENTIAL.

        SELECT ArchivoOrdenado.


      ******************************************************************
       DATA DIVISION.
      ******************************************************************
      *****************************************************
       FILE SECTION.
      *****************************************************
        FD ArchivoEntrada.
        01 RegistroEntrada.
           03 Nombre PIC X(8).

        FD ArchivoSalida.
        01 RegistroSalida.
           03 Nombre PIC X(8).

        SD ArchivoOrdenado.
        01 RegistroOrdenado.
           03 Nombre PIC X(8).

      *****************************************************
       WORKING-STORAGE SECTION.
      *****************************************************

       01 EOFEntrada PIC X VALUE 'N'.
       01 EOFOrdenado PIC X VALUE 'N'.
         
      ******************************************************************
       PROCEDURE DIVISION.
      ******************************************************************
       Begin.
         SORT ArchivoOrdenado ON ASCENDING KEY Nombre OF ArchivoOrdenado
           INPUT PROCEDURE IS PreProcesar
           OUTPUT PROCEDURE IS PostProcesar
         STOP RUN.

       PreProcesar.
         OPEN INPUT ArchivoEntrada.
         READ ArchivoEntrada AT END SET EOFEntrada TO 'S'.
         PERFORM UNTIL EOFEntrada = 'S'
           MOVE RegistroEntrada TO RegistroOrdenado
           RELEASE RegistroOrdenado
           READ ArchivoEntrada AT END SET EOFEntrada TO 'S'
         END-PERFORM.
         CLOSE ArchivoEntrada.
       PostProcesar.
         OPEN OUTPUT ArchivoSalida.
         RETURN ArchivoOrdenado AT END SET EOFOrdenado TO 'S'.
         PERFORM UNTIL EOFOrdenado = 'S'
           MOVE RegistroOrdenado TO RegistroSalida
           WRITE RegistroSalida
           RETURN ArchivoOrdenado AT END SET EOFOrdenado TO 'S'
         END-PERFORM.
         CLOSE ArchivoSalida.
